<?php

require_once(BaseConfig::LoadClass('doc_pdf.class.php'));
require_once(BaseConfig::LoadClass('sucursales.class.php'));

class CotizacionPDF extends PDFDoc {
  /**
   * Arreglo con la respuesta del Web Service
   * 
   * @var array
   */
  var $__arrResponse;
  
  /**
   * Objeto que contiene la info de la cotizacion
   * 
   * @var Cotizaciones
   */
  var $__oCotizacion;
  
  var $__arrInfoAdicional;
  
  var $intIncluirSegmentado;
  
  function CotizacionPDF() {
    parent::PDFDoc();
    
    $this->__arrInfoAdicional["direccion"]["texto"][] = "Chartis Seguros México, S.A. de C.V.";
    $this->__arrInfoAdicional["direccion"]["texto"][] = "Insurgentes Sur 1136";
    $this->__arrInfoAdicional["direccion"]["texto"][] = "Col. Del Valle, 03219, México D.F.";
    $this->__arrInfoAdicional["direccion"]["texto"][] = "Tel. 5488 4700";
    $this->__arrInfoAdicional["direccion"]["coords"]["StartX"] = 151;
    $this->__arrInfoAdicional["direccion"]["coords"]["StartY"] =  10;
    $this->__arrInfoAdicional["direccion"]["coords"]["Width" ] =  40;
    $this->__arrInfoAdicional["direccion"]["coords"]["Height"] =   3;
    
    $this->intIncluirSegmentado = 1;
  }
  
  function SetResponseArray($arrResponse) {
    $this->__arrResponse = $arrResponse;
  }
  
  function SetCotizaObject($oCotizacion) {
    $this->__oCotizacion = $oCotizacion;
  }
  
  function CreateNewPage() {
    global $strGPath;
    
    $this->oTCPDF->setPrintHeader(false);
    $this->oTCPDF->setPrintFooter(false);
    
    $this->oTCPDF->AddPage();
    
    // Logo
    $this->oTCPDF->Image("$strGPath/images/aig_logo_pdf.png", 13, 8.5, 42, '');
    
    // Direccion
    $this->oTCPDF->SetFont('helvetica', 'B', 6);
    $this->oTCPDF->SetTextColor(125);
    foreach($this->__arrInfoAdicional["direccion"]["texto"] as $intIndice => $strLinea) {
      $this->oTCPDF->MultiCell(
        $this->__arrInfoAdicional["direccion"]["coords"]["Width" ], 
        $this->__arrInfoAdicional["direccion"]["coords"]["Height"], 
        $strLinea, $this->__intBordesPrueba, "R", 0, 0, 
        $this->__arrInfoAdicional["direccion"]["coords"]["StartX"], 
        $this->__arrInfoAdicional["direccion"]["coords"]["StartY"] + ($this->__arrInfoAdicional["direccion"]["coords"]["Height"] * $intIndice) 
      );
    }
    
    // Tipo de cotizacion
    $this->oTCPDF->SetFont('helvetica', 'B', 10);
    $this->oTCPDF->SetTextColor(0);
    $this->oTCPDF->MultiCell(175, 6, "COTIZACION AUTO INDIVIDUAL", $this->__intBordesPrueba, "C", 0, 0, 16, 25);
    
    // Informacion global de la cotizacion
    $this->oTCPDF->SetFont('helvetica', 'B', 7);
    $this->oTCPDF->SetTextColor(0);
    $this->oTCPDF->MultiCell(20, 4, "Cotización No"              , $this->__intBordesPrueba, "L", 0, 0,  16, 30);
    $this->oTCPDF->MultiCell(40, 4, "Sucursal"                   , $this->__intBordesPrueba, "L", 0, 0,  42, 30);
    $this->oTCPDF->MultiCell(40, 4, "Usuario"                    , $this->__intBordesPrueba, "L", 0, 0,  86, 30);
    $this->oTCPDF->MultiCell(40, 4, "Fecha y hora de Elaboración", $this->__intBordesPrueba, "L", 0, 0, 152, 30);
    
    // Numero de cotizacion
    // Objeto de la sucursal
    $oSucursal = new Sucursales($this->__arrResponse["Cotizacion"]["cod_Sucursal"]);
    
    $this->oTCPDF->SetFont('helvetica', 'B', 10);
    $this->oTCPDF->SetTextColor(0);
    $this->oTCPDF->MultiCell(20, 6, $this->__arrResponse["Cotizacion"]["cod_Cotizacion"], 1, "C", 0, 0, 16, 34, true, 0, false, true, 6, "M");
    // Sucursal
    $this->oTCPDF->SetFont('helvetica', '', 6);
    $this->oTCPDF->SetTextColor(0);
    $this->oTCPDF->MultiCell(40, 6, $oSucursal->strNombre, 1, "C", 0, 0, 42, 34, true, 0, false, true, 6, "M");
    // Usuario
    $this->oTCPDF->MultiCell(40, 6, $this->__arrResponse["Cotizacion"]["userName"], 1, "C", 0, 0, 86, 34, true, 0, false, true, 6, "M");
    // Fecha y hora
    $this->oTCPDF->MultiCell(40, 6, Variables::FechaParaImprimir2($this->__arrResponse["Cotizacion"]["fec_Cotizacion"], false, true), 1, "C", 0, 0, 152, 34, true, 0, false, true, 6, "M");
    
    // Linea separatoria
    $this->oTCPDF->Line(14, 41, 194, 41);
    
  }
  
  function __ImprimirInformacionAsegurado($intOffsetY) {
    // ********** ************************* ********** //
    // ********** Informacion del asegurado ********** //
    // ********** ************************* ********** //
    $arrInfo["Cabecera"][0]["Texto"] = "INFORMACION DEL ASEGURADO";
    
    $oConecta     = new Conecta();
    $strConsulta  = "";
    $strConsulta .= "SELECT nombre ";
    $strConsulta .= "FROM cat_ciudad_colonias ";
    $strConsulta .= "WHERE id_estado    = {$this->__oCotizacion->intDeEstado   } ";
    $strConsulta .= "  AND id_colonia   = {$this->__oCotizacion->intDeColonia  } ";
    $strConsulta .= "  AND id_municipio = {$this->__oCotizacion->intIdMunicipio} ";
    $oConecta->Consulta($strConsulta);
    $strNombrePob = $oConecta->Field('nombre');
    
//    $arrInfo["Cuerpo"  ][0]["Texto"] = "NOMBRE COMPLETO"; $arrInfo["Info"    ][0]["Texto"] = join(" ", $this->__arrResponse["Cotizacion"]["a_Paterno"]) . " " . join(" ", $this->__arrResponse["Cotizacion"]["a_Materno"]) . " " . join(" ", $this->__arrResponse["Cotizacion"]["nombre"]);
    $arrInfo["Cuerpo"  ][0]["Texto"] = "NOMBRE COMPLETO"; $arrInfo["Info"    ][0]["Texto"] = $this->__oCotizacion->strAPaterno . " " . $this->__oCotizacion->strAMaterno . " " . $this->__oCotizacion->strNombre;
    $arrInfo["Cuerpo"  ][1]["Texto"] = "SEXO"           ; $arrInfo["Info"    ][1]["Texto"] = Variables::GetValueByTable("cat_sexos", "id_sexo", "nombre", $this->__arrResponse["Cotizacion"]["cod_Sexo"]);
    $arrInfo["Cuerpo"  ][2]["Texto"] = "POBLACION"      ; $arrInfo["Info"    ][2]["Texto"] = $strNombrePob;
    $arrInfo["Cuerpo"  ][3]["Texto"] = "EDAD"           ; $arrInfo["Info"    ][3]["Texto"] = $this->__arrResponse["Cotizacion"]["edad"      ];
    $arrInfo["Cuerpo"  ][4]["Texto"] = "COD. POSTAL"    ; $arrInfo["Info"    ][4]["Texto"] = $this->__arrResponse["Cotizacion"]["cod_Postal"];
    
    $this->oTCPDF->SetFont('helvetica', 'B', 10);
    $this->oTCPDF->SetTextColor(0);
    $this->oTCPDF->MultiCell(176,  6, $arrInfo["Cabecera"][0]["Texto"], $this->__intBordesPrueba, "L", 0, 0,  16, $intOffsetY +  0);
    $this->oTCPDF->SetFont('helvetica', '' ,  7);
    $this->oTCPDF->SetTextColor(0);
    
    $this->oTCPDF->MultiCell( 28,  4, $arrInfo["Cuerpo"  ][0]["Texto"], $this->__intBordesPrueba, "L", 0, 0,  16, $intOffsetY +  6);
    $this->oTCPDF->MultiCell( 85,  4, $arrInfo["Info"    ][0]["Texto"], $this->__intBordesPrueba, "L", 0, 0,  44, $intOffsetY +  6);
    $this->oTCPDF->Line     ( 44, $intOffsetY + 10, 129, $intOffsetY + 10);
    
    $this->oTCPDF->MultiCell( 28,  4, $arrInfo["Cuerpo"  ][1]["Texto"], $this->__intBordesPrueba, "L", 0, 0,  16, $intOffsetY + 10);
    $this->oTCPDF->MultiCell( 85,  4, $arrInfo["Info"    ][1]["Texto"], $this->__intBordesPrueba, "L", 0, 0,  44, $intOffsetY + 10);
    $this->oTCPDF->Line     ( 44, $intOffsetY + 14, 129, $intOffsetY + 14);
    
    $this->oTCPDF->MultiCell( 28,  4, $arrInfo["Cuerpo"  ][2]["Texto"], $this->__intBordesPrueba, "L", 0, 0,  16, $intOffsetY + 14);
    $this->oTCPDF->MultiCell( 85,  4, $arrInfo["Info"    ][2]["Texto"], $this->__intBordesPrueba, "L", 0, 0,  44, $intOffsetY + 14);
    $this->oTCPDF->Line     ( 44, $intOffsetY + 18, 129, $intOffsetY + 18);
    
    $this->oTCPDF->MultiCell( 25,  4, $arrInfo["Cuerpo"  ][3]["Texto"], $this->__intBordesPrueba, "L", 0, 0, 129, $intOffsetY + 10);
    $this->oTCPDF->MultiCell( 38,  4, $arrInfo["Info"    ][3]["Texto"], $this->__intBordesPrueba, "L", 0, 0, 154, $intOffsetY + 10);
    $this->oTCPDF->Line     (154, $intOffsetY + 14, 192, $intOffsetY + 14);
    
    $this->oTCPDF->MultiCell( 25,  4, $arrInfo["Cuerpo"  ][4]["Texto"], $this->__intBordesPrueba, "L", 0, 0, 129, $intOffsetY + 14);
    $this->oTCPDF->MultiCell( 38,  4, $arrInfo["Info"    ][4]["Texto"], $this->__intBordesPrueba, "L", 0, 0, 154, $intOffsetY + 14);
    $this->oTCPDF->Line     (154, $intOffsetY + 18, 192, $intOffsetY + 18);
  }
  
  function __ImprimirInformacionVehiculo($intOffsetY) {
    // ********** ************************ ********** //
    // ********** Informacion del vehiculo ********** //
    // ********** ************************ ********** //
    $arrInfo["Cabecera"][0]["Texto"] = "INFORMACION DEL VEHICULO";
    
    $strMarca  = Variables::GetValueByTable(
      "cat_marcas", 
      "id_marca"  , 
      "nombre"    , 
      $this->__arrResponse["Cotizacion"]["marca"]
    );
    $strModelo = Variables::GetValueByTableMultipleIndex(
      "cat_modelos_sisa", 
      "id_sisa,id_marca,id_modelo,anio", 
      "nombre", 
        $this->__arrResponse["Cotizacion"]["sisa"       ] . "," . 
        $this->__arrResponse["Cotizacion"]["marca"      ] . "," . 
        $this->__arrResponse["Cotizacion"]["modelo"     ] . "," . 
        $this->__arrResponse["Cotizacion"]["anio_Modelo"]
    );
    $arrInfo["Cuerpo"  ][0]["Texto"] = "MARCA"; $arrInfo["Info"    ][0]["Texto"] = $strMarca;
    $arrInfo["Cuerpo"  ][1]["Texto"] = "AÑO"  ; $arrInfo["Info"    ][1]["Texto"] = $this->__arrResponse["Cotizacion"]["anio_Modelo"];
    $arrInfo["Cuerpo"  ][2]["Texto"] = "USO"  ; $arrInfo["Info"    ][2]["Texto"] = "PARTICULAR / PERSONAL";
    $arrInfo["Cuerpo"  ][3]["Texto"] = "TIPO" ; $arrInfo["Info"    ][3]["Texto"] = $strModelo;
    $arrInfo["Cuerpo"  ][4]["Texto"] = "SISA" ; $arrInfo["Info"    ][4]["Texto"] = $this->__arrResponse["Cotizacion"]["sisa"];
    
    $this->oTCPDF->SetFont('helvetica', 'B', 10);
    $this->oTCPDF->SetTextColor(0);
    $this->oTCPDF->MultiCell(176,  6, $arrInfo["Cabecera"][0]["Texto"], $this->__intBordesPrueba, "L", 0, 0,  16, $intOffsetY +  0);
    $this->oTCPDF->SetFont('helvetica', '' ,  7);
    $this->oTCPDF->SetTextColor(0);
    
    $this->oTCPDF->MultiCell( 28,  4, $arrInfo["Cuerpo"  ][0]["Texto"], $this->__intBordesPrueba, "L", 0, 0,  16, $intOffsetY +  6);
    $this->oTCPDF->MultiCell( 45,  4, $arrInfo["Info"    ][0]["Texto"], $this->__intBordesPrueba, "L", 0, 0,  44, $intOffsetY +  6);
    $this->oTCPDF->Line     ( 44, $intOffsetY + 10,  89, $intOffsetY + 10);
    
    $this->oTCPDF->MultiCell( 28,  4, $arrInfo["Cuerpo"  ][1]["Texto"], $this->__intBordesPrueba, "L", 0, 0,  16, $intOffsetY + 10);
    $this->oTCPDF->MultiCell( 45,  4, $arrInfo["Info"    ][1]["Texto"], $this->__intBordesPrueba, "L", 0, 0,  44, $intOffsetY + 10);
    $this->oTCPDF->Line     ( 44, $intOffsetY + 14,  89, $intOffsetY + 14);
    
    $this->oTCPDF->MultiCell( 28,  4, $arrInfo["Cuerpo"  ][2]["Texto"], $this->__intBordesPrueba, "L", 0, 0,  16, $intOffsetY + 14);
    $this->oTCPDF->MultiCell( 45,  4, $arrInfo["Info"    ][2]["Texto"], $this->__intBordesPrueba, "L", 0, 0,  44, $intOffsetY + 14);
    $this->oTCPDF->Line     ( 44, $intOffsetY + 18,  89, $intOffsetY + 18);
    
    $this->oTCPDF->MultiCell( 20,  4, $arrInfo["Cuerpo"  ][3]["Texto"], $this->__intBordesPrueba, "L", 0, 0,  89, $intOffsetY +  6);
    $this->oTCPDF->MultiCell( 83,  4, $arrInfo["Info"    ][3]["Texto"], $this->__intBordesPrueba, "L", 0, 0, 109, $intOffsetY +  6);
    $this->oTCPDF->Line     (109, $intOffsetY + 10, 192, $intOffsetY + 10);
    
    $this->oTCPDF->MultiCell( 20,  4, $arrInfo["Cuerpo"  ][4]["Texto"], $this->__intBordesPrueba, "L", 0, 0,  89, $intOffsetY + 14);
    $this->oTCPDF->MultiCell( 83,  4, $arrInfo["Info"    ][4]["Texto"], $this->__intBordesPrueba, "L", 0, 0, 109, $intOffsetY + 14);
    $this->oTCPDF->Line     (109, $intOffsetY + 18, 192, $intOffsetY + 18);
  }
  
  function __ImprimirDatosGeneralesCotizacion($intOffsetY) {
    // ********** ******************************** ********** //
    // ********** Datos Generales de la Cotizacion ********** //
    // ********** ******************************** ********** //
    $arrInfo["Cabecera"][0]["Texto"] = "DATOS GENERALES DE LA COTIZACION";
    
    $arrInfo["Cuerpo"  ][0]["Texto"] = "FECHA DE TARIFA"   ; $arrInfo["Info"    ][0]["Texto"] = Variables::FechaParaImprimir2($this->__arrResponse["Cotizacion"]["fec_Tarifa"        ], true);
    $arrInfo["Cuerpo"  ][1]["Texto"] = "INICIO DE VIGENCIA"; $arrInfo["Info"    ][1]["Texto"] = Variables::FechaParaImprimir2($this->__arrResponse["Cotizacion"]["fec_Cotizacion"    ], true);
    $arrInfo["Cuerpo"  ][2]["Texto"] = "FIN DE VIGENCIA"   ; $arrInfo["Info"    ][2]["Texto"] = Variables::FechaParaImprimir2($this->__arrResponse["Cotizacion"]["fec_Ven_Cotizacion"], true);
    $arrInfo["Cuerpo"  ][3]["Texto"] = "ZONA DE TARIFA"    ; $arrInfo["Info"    ][3]["Texto"] = $this->__arrResponse["Cotizacion"]["cod_Zona"];
    $arrInfo["Cuerpo"  ][4]["Texto"] = "DIAS DE VIGENCIA"  ; $arrInfo["Info"    ][4]["Texto"] = Variables::DiasDesdeFecha($this->__arrResponse["Cotizacion"]["fec_Cotizacion"], $this->__arrResponse["Cotizacion"]["fec_Ven_Cotizacion"]) + 1;
    
    $this->oTCPDF->SetFont('helvetica', 'B', 10);
    $this->oTCPDF->SetTextColor(0);
    $this->oTCPDF->MultiCell(176,  6, $arrInfo["Cabecera"][0]["Texto"], $this->__intBordesPrueba, "L", 0, 0,  16, $intOffsetY +  0);
    $this->oTCPDF->SetFont('helvetica', '' ,  7);
    $this->oTCPDF->SetTextColor(0);
    
    $this->oTCPDF->MultiCell( 28,  4, $arrInfo["Cuerpo"  ][0]["Texto"], $this->__intBordesPrueba, "L", 0, 0,  16, $intOffsetY +  6);
    $this->oTCPDF->MultiCell( 36,  4, $arrInfo["Info"    ][0]["Texto"], $this->__intBordesPrueba, "L", 0, 0,  44, $intOffsetY +  6);
    $this->oTCPDF->Line     ( 44, $intOffsetY + 10,  80, $intOffsetY + 10);
    
    $this->oTCPDF->MultiCell( 28,  4, $arrInfo["Cuerpo"  ][1]["Texto"], $this->__intBordesPrueba, "L", 0, 0,  16, $intOffsetY + 10);
    $this->oTCPDF->MultiCell( 36,  4, $arrInfo["Info"    ][1]["Texto"], $this->__intBordesPrueba, "L", 0, 0,  44, $intOffsetY + 10);
    $this->oTCPDF->Line     ( 44, $intOffsetY + 14,  80, $intOffsetY + 14);
    
    $this->oTCPDF->MultiCell( 25,  4, $arrInfo["Cuerpo"  ][2]["Texto"], $this->__intBordesPrueba, "L", 0, 0,  80, $intOffsetY + 10);
    $this->oTCPDF->MultiCell( 36,  4, $arrInfo["Info"    ][2]["Texto"], $this->__intBordesPrueba, "L", 0, 0, 105, $intOffsetY + 10);
    $this->oTCPDF->Line     (105, $intOffsetY + 14, 141, $intOffsetY + 14);
    
    $this->oTCPDF->MultiCell( 27,  4, $arrInfo["Cuerpo"  ][3]["Texto"], $this->__intBordesPrueba, "L", 0, 0, 141, $intOffsetY +  6);
    $this->oTCPDF->MultiCell( 24,  4, $arrInfo["Info"    ][3]["Texto"], $this->__intBordesPrueba, "L", 0, 0, 168, $intOffsetY +  6);
    $this->oTCPDF->Line     (168, $intOffsetY + 10, 192, $intOffsetY + 10);
    
    $this->oTCPDF->MultiCell( 27,  4, $arrInfo["Cuerpo"  ][4]["Texto"], $this->__intBordesPrueba, "L", 0, 0, 141, $intOffsetY + 10);
    $this->oTCPDF->MultiCell( 24,  4, $arrInfo["Info"    ][4]["Texto"], $this->__intBordesPrueba, "L", 0, 0, 168, $intOffsetY + 10);
    $this->oTCPDF->Line     (168, $intOffsetY + 14, 192, $intOffsetY + 14);
  }
  
  function ImprimirInformacionGeneral() {
    $this->__ImprimirInformacionAsegurado    (43); // 43
    $this->__ImprimirInformacionVehiculo     (68); // 68
    $this->__ImprimirDatosGeneralesCotizacion(92); // 92
  }
  
  function __ImprimirCabeceraDetalleCobertura($intOffsetY) {
    $arrCabeceras[0] = "DETALLE DE COBERTURAS"    ;
    $arrCabeceras[1] = "COBERTURAS"               ;
    $arrCabeceras[2] = "LÍMITE DE RESPONSABILIDAD";
    $arrCabeceras[3] = "DEDUCIBLES"               ;
    $arrCabeceras[4] = "PAQUETE DE COBERTURA"     ;
    
    $arrCabeceras[5] = "GOLD"                     ;
    $arrCabeceras[6] = "AMPLIO"                   ;
    $arrCabeceras[7] = "LIMITADO"                 ;
    $arrCabeceras[8] = "BASICO"                   ;
    $arrCabeceras[9] = "SEGMENTADO"               ;
    
    $this->oTCPDF->SetFont('helvetica', 'B', 10);
    $this->oTCPDF->SetTextColor(0);
    $this->oTCPDF->MultiCell(175, 6, $arrCabeceras[0], $this->__intBordesPrueba, "C", 0, 0, 16, $intOffsetY + 0);
    
    $this->oTCPDF->Line( 14, $intOffsetY - 1, 194, $intOffsetY - 1);
    $this->oTCPDF->Line( 14, $intOffsetY + 5, 194, $intOffsetY + 5);
    
    $this->oTCPDF->SetFont('helvetica', 'B', 8);
    $this->oTCPDF->SetTextColor(0);
    
    $this->oTCPDF->MultiCell(47, 8, $arrCabeceras[1], $this->__intBordesPrueba, "L", 0, 0,  16, $intOffsetY +  6);
    $this->oTCPDF->MultiCell(30, 8, $arrCabeceras[2], $this->__intBordesPrueba, "R", 0, 0,  63, $intOffsetY +  6);
    $this->oTCPDF->MultiCell(22, 8, $arrCabeceras[3], $this->__intBordesPrueba, "R", 0, 0,  93, $intOffsetY +  6);
    $this->oTCPDF->MultiCell(76, 4, $arrCabeceras[4], $this->__intBordesPrueba, "C", 0, 0, 115, $intOffsetY +  6);
    if($this->intIncluirSegmentado) {
      $this->oTCPDF->SetFont('helvetica', 'B', 6);
      $this->oTCPDF->SetTextColor(0);
      $this->oTCPDF->MultiCell(15, 4, $arrCabeceras[5], $this->__intBordesPrueba, "C", 0, 0, 115, $intOffsetY + 10);
      $this->oTCPDF->MultiCell(15, 4, $arrCabeceras[6], $this->__intBordesPrueba, "C", 0, 0, 130, $intOffsetY + 10);
      $this->oTCPDF->MultiCell(15, 4, $arrCabeceras[7], $this->__intBordesPrueba, "C", 0, 0, 145, $intOffsetY + 10);
      $this->oTCPDF->MultiCell(15, 4, $arrCabeceras[8], $this->__intBordesPrueba, "C", 0, 0, 160, $intOffsetY + 10);
      $this->oTCPDF->MultiCell(18, 4, $arrCabeceras[9], $this->__intBordesPrueba, "C", 0, 0, 175, $intOffsetY + 10);
    } else {
      $this->oTCPDF->SetFont('helvetica', 'B', 8);
      $this->oTCPDF->SetTextColor(0);
      $this->oTCPDF->MultiCell(19, 4, $arrCabeceras[5], $this->__intBordesPrueba, "C", 0, 0, 115, $intOffsetY + 10);
      $this->oTCPDF->MultiCell(19, 4, $arrCabeceras[6], $this->__intBordesPrueba, "C", 0, 0, 134, $intOffsetY + 10);
      $this->oTCPDF->MultiCell(19, 4, $arrCabeceras[7], $this->__intBordesPrueba, "C", 0, 0, 153, $intOffsetY + 10);
      $this->oTCPDF->MultiCell(19, 4, $arrCabeceras[8], $this->__intBordesPrueba, "C", 0, 0, 172, $intOffsetY + 10);
    }
    
    $this->oTCPDF->Line( 14, $intOffsetY + 14, 194, $intOffsetY + 14);
  }
  
  function __ImprimirLineaDetalleCobertura($arrInfoLinea, $intOffsetY) {
    global $strGPath;
    
    $this->oTCPDF->MultiCell(55, 8, $arrInfoLinea["Cobertura" ], $this->__intBordesPrueba, "L", 0, 0,  16, $intOffsetY);
    $this->oTCPDF->MultiCell(30, 8, $arrInfoLinea["LimiteResp"], $this->__intBordesPrueba, "R", 0, 0,  63, $intOffsetY);
    $this->oTCPDF->MultiCell(22, 8, $arrInfoLinea["Deducible" ], $this->__intBordesPrueba, "R", 0, 0,  93, $intOffsetY);
    
    if($this->intIncluirSegmentado) {
      if($arrInfoLinea["Gold"      ]) { $this->oTCPDF->Image("$strGPath/images/chartis_cotiza_paloma.png", 121, $intOffsetY, 4, ''); }
      if($arrInfoLinea["Amplio"    ]) { $this->oTCPDF->Image("$strGPath/images/chartis_cotiza_paloma.png", 136, $intOffsetY, 4, ''); }
      if($arrInfoLinea["Limitado"  ]) { $this->oTCPDF->Image("$strGPath/images/chartis_cotiza_paloma.png", 151, $intOffsetY, 4, ''); }
      if($arrInfoLinea["Basico"    ]) { $this->oTCPDF->Image("$strGPath/images/chartis_cotiza_paloma.png", 166, $intOffsetY, 4, ''); }
      if($arrInfoLinea["Segmentado"]) { $this->oTCPDF->Image("$strGPath/images/chartis_cotiza_paloma.png", 181, $intOffsetY, 4, ''); }
    } else {
      if($arrInfoLinea["Gold"      ]) { $this->oTCPDF->Image("$strGPath/images/chartis_cotiza_paloma.png", 121, $intOffsetY, 4, ''); }
      if($arrInfoLinea["Amplio"    ]) { $this->oTCPDF->Image("$strGPath/images/chartis_cotiza_paloma.png", 140, $intOffsetY, 4, ''); }
      if($arrInfoLinea["Limitado"  ]) { $this->oTCPDF->Image("$strGPath/images/chartis_cotiza_paloma.png", 159, $intOffsetY, 4, ''); }
      if($arrInfoLinea["Basico"    ]) { $this->oTCPDF->Image("$strGPath/images/chartis_cotiza_paloma.png", 178, $intOffsetY, 4, ''); }
    }
    
    $this->oTCPDF->Line( 14, $intOffsetY + 3, 194, $intOffsetY + 3);
  }
  
  function __ImprimirDetallesCobertura($intOffsetY) {
    $intOffsetYPlus = 3.5;
    
    foreach($this->__arrResponse["Coberturas"] as $intIndice => $arrInfoIndice) {
//      $arrTextos[$intIndice]["Cobertura" ] = (utf8_decode($arrInfoIndice["txt_desc_cobertura"]));
      $strCobertura = Variables::QuitarElementosASCIIFueraRango(trim($arrInfoIndice["txt_desc_cobertura"]));
      // Cambiar los acentos y la Ñ
      /*
      $strCobertura = str_replace(chr(164), "N", $strCobertura);
      $strCobertura = str_replace(chr(160), "A", $strCobertura);
      $strCobertura = str_replace(chr(130), "E", $strCobertura);
      $strCobertura = str_replace(chr(161), "I", $strCobertura);
      $strCobertura = str_replace(chr(162), "O", $strCobertura);
      $strCobertura = str_replace(chr(163), "U", $strCobertura);
       */
      $strCobertura = strtoupper($strCobertura);
      
      $arrTextos[$intIndice]["Cobertura" ] = trim($arrInfoIndice["txt_desc_cobertura"]);
      $arrTextos[$intIndice]["LimiteResp"] = "";
      $arrTextos[$intIndice]["Deducible" ] = "";
      $arrTextos[$intIndice]["Gold"      ] = ($arrInfoIndice["sn_Paq_Gold"      ] == "true" ? 1 : 0);
      $arrTextos[$intIndice]["Amplio"    ] = ($arrInfoIndice["sn_Paq_Amplio"    ] == "true" ? 1 : 0);
      $arrTextos[$intIndice]["Limitado"  ] = ($arrInfoIndice["sn_Paq_Limitado"  ] == "true" ? 1 : 0);
      $arrTextos[$intIndice]["Basico"    ] = ($arrInfoIndice["sn_Paq_Basico"    ] == "true" ? 1 : 0);
      $arrTextos[$intIndice]["Segmentado"] = ($arrInfoIndice["sn_Paq_Segmentado"] == "true" ? 1 : 0);
      
      // Checar si es alguno de los que tenemos
      if($strCobertura == strtoupper("Daos Materiales:")) {
        $arrTextos[$intIndice]["LimiteResp"] = "VALOR GUIA EBC";
        $arrTextos[$intIndice]["Deducible" ] = $this->__arrResponse["Cotizacion"]["dec_Danos_Materiales"] . " %";
        
      } else if($strCobertura == strtoupper("Robo Total:")) {
        $arrTextos[$intIndice]["LimiteResp"] = "VALOR GUIA EBC";
        $arrTextos[$intIndice]["Deducible" ] = $this->__arrResponse["Cotizacion"]["dec_Robo_Total"] . " %";
        
      } else if($strCobertura == strtoupper("Responsabilidad Civil LUC:")) {
        $arrTextos[$intIndice]["LimiteResp"] = Variables::FormatoCurrency($this->__arrResponse["Cotizacion"]["dec_Resp_Civil"]);
        $arrTextos[$intIndice]["Deducible" ] = "0.00";
        
      } else if($strCobertura == strtoupper("Gastos Medicos Ocupantes:")) {
        $arrTextos[$intIndice]["LimiteResp"] = Variables::FormatoCurrency($this->__arrResponse["Cotizacion"]["dec_Gastos_Medicos"]);
        $arrTextos[$intIndice]["Deducible" ] = "0.00";
        
      } else if($strCobertura == strtoupper("Extensin de Cobertura:")) {
        $arrTextos[$intIndice]["LimiteResp"] = Variables::FormatoCurrency($this->__arrResponse["Cotizacion"]["dec_Resp_Civil"]);
        $arrTextos[$intIndice]["Deducible" ] = "0.00";
        
      } else if($strCobertura == strtoupper("Automvil Sustituto por prdida total:")) {
        $arrTextos[$intIndice]["LimiteResp"] = "AMPARADA";
        $arrTextos[$intIndice]["Deducible" ] = "0.00";
        
      } else if($strCobertura == strtoupper("Eliminacin de Deducibles en caso de Prdida Total:")) {
        $arrTextos[$intIndice]["LimiteResp"] = "AMPARADA";
        $arrTextos[$intIndice]["Deducible" ] = "0.00";
        
      } else if($strCobertura == strtoupper("Devolucin de Prima en caso de Prdida Total:")) {
        $arrTextos[$intIndice]["LimiteResp"] = "AMPARADA";
        $arrTextos[$intIndice]["Deducible" ] = "0.00";
        
      } else if($strCobertura == strtoupper("Asistencia:")) {
        $arrTextos[$intIndice]["LimiteResp"] = "AMPARADA";
        $arrTextos[$intIndice]["Deducible" ] = "0.00";
        
      } else if($strCobertura == strtoupper("Defensa:")) {
        $arrTextos[$intIndice]["LimiteResp"] = "AMPARADA";
        $arrTextos[$intIndice]["Deducible" ] = "0.00";
        
      } else if($strCobertura == strtoupper("Equipo Especial:")) {
        $arrTextos[$intIndice]["LimiteResp"] = "EXCLUIDA";
        $arrTextos[$intIndice]["Deducible" ] = "0.00";
        
      } else if($strCobertura == strtoupper("Adaptaciones y conversiones:")) {
        $arrTextos[$intIndice]["LimiteResp"] = "EXCLUIDA";
        $arrTextos[$intIndice]["Deducible" ] = "0.00";
        
      }
    }
    
    $this->oTCPDF->SetFont('helvetica', '', 6);
    $this->oTCPDF->SetTextColor(0);
    $this->oTCPDF->SetLineStyle(array("color" => array("200")));
    foreach($arrTextos as $intIndice => $arrInfoTexto) {
      $this->__ImprimirLineaDetalleCobertura($arrInfoTexto, $intOffsetY + ($intIndice * $intOffsetYPlus));
    }
    $this->oTCPDF->SetLineStyle(array("color" => array("0")));
  }
  
  function __ImprimirFormaPago($intOffsetY, $intOffsetX) {
    $this->oTCPDF->SetFont('helvetica', '', 6);
    $this->oTCPDF->SetTextColor(0);
    $this->oTCPDF->MultiCell(20, 5, "Moneda:"       , $this->__intBordesPrueba, "R", 0, 0, $intOffsetX + 0, $intOffsetY +  0);
    $this->oTCPDF->MultiCell(20, 5, "Forma de pago:", $this->__intBordesPrueba, "R", 0, 0, $intOffsetX + 0, $intOffsetY +  5);
    $this->oTCPDF->MultiCell(20, 5, "Medio de pago:", $this->__intBordesPrueba, "R", 0, 0, $intOffsetX + 0, $intOffsetY + 10);
    
    $this->oTCPDF->MultiCell(20, 5, "NACIONAL", $this->__intBordesPrueba, "L", 0, 0, $intOffsetX + 20, $intOffsetY +  0);
    $this->oTCPDF->MultiCell(20, 5, Variables::GetValueByTable("cat_formas_pago"   , "id_forma_pago"   , "nombre", $this->__arrResponse["Cotizacion"]["cod_Forma_Pago"   ]), $this->__intBordesPrueba, "L", 0, 0, $intOffsetX + 20, $intOffsetY +  5);
    $this->oTCPDF->MultiCell(20, 5, Variables::GetValueByTable("cat_conductos_pago", "id_conducto_pago", "nombre", $this->__arrResponse["Cotizacion"]["cod_Conducto_Pago"]), $this->__intBordesPrueba, "L", 0, 0, $intOffsetX + 20, $intOffsetY + 10);
  }
  
  function __ImprimirLineaDetallePago($arrLinea, $intOffsetY, $intOffsetX) {
    if($arrLinea["Negritas"]) {
      $this->oTCPDF->SetFont('helvetica', 'B', 6);
    } else {
      $this->oTCPDF->SetFont('helvetica', '', 6);
    }
    
    $this->oTCPDF->SetTextColor(0);
    $this->oTCPDF->MultiCell  (40, 5, $arrLinea["Nombre"    ], $this->__intBordesPrueba, "R", 0, 0, $intOffsetX +   0, $intOffsetY);
    if($this->intIncluirSegmentado) {
      $this->oTCPDF->MultiCell(16, 5, $arrLinea["Gold"      ], $this->__intBordesPrueba, "R", 0, 0, $intOffsetX +  40, $intOffsetY);
      $this->oTCPDF->MultiCell(16, 5, $arrLinea["Amplio"    ], $this->__intBordesPrueba, "R", 0, 0, $intOffsetX +  56, $intOffsetY);
      $this->oTCPDF->MultiCell(16, 5, $arrLinea["Limitado"  ], $this->__intBordesPrueba, "R", 0, 0, $intOffsetX +  72, $intOffsetY);
      $this->oTCPDF->MultiCell(16, 5, $arrLinea["Basico"    ], $this->__intBordesPrueba, "R", 0, 0, $intOffsetX +  88, $intOffsetY);
      $this->oTCPDF->MultiCell(16, 5, $arrLinea["Segmentado"], $this->__intBordesPrueba, "R", 0, 0, $intOffsetX + 104, $intOffsetY);
    } else {
      $this->oTCPDF->MultiCell(20, 5, $arrLinea["Gold"      ], $this->__intBordesPrueba, "R", 0, 0, $intOffsetX +  40, $intOffsetY);
      $this->oTCPDF->MultiCell(20, 5, $arrLinea["Amplio"    ], $this->__intBordesPrueba, "R", 0, 0, $intOffsetX +  60, $intOffsetY);
      $this->oTCPDF->MultiCell(20, 5, $arrLinea["Limitado"  ], $this->__intBordesPrueba, "R", 0, 0, $intOffsetX +  80, $intOffsetY);
      $this->oTCPDF->MultiCell(20, 5, $arrLinea["Basico"    ], $this->__intBordesPrueba, "R", 0, 0, $intOffsetX + 100, $intOffsetY);
    }
    
    if($arrLinea["Cuadro"]) {
      $this->oTCPDF->Line($intOffsetX +  40, $intOffsetY + 0, $intOffsetX + 120, $intOffsetY + 0);
      $this->oTCPDF->Line($intOffsetX +  40, $intOffsetY + 4, $intOffsetX + 120, $intOffsetY + 4);
      $this->oTCPDF->Line($intOffsetX +  40, $intOffsetY + 0, $intOffsetX +  40, $intOffsetY + 4);
      $this->oTCPDF->Line($intOffsetX + 120, $intOffsetY + 0, $intOffsetX + 120, $intOffsetY + 4);
    }
  }
  
  function __ImprimirDetallesPago($intOffsetY, $intOffsetX) {
    $intEnNegritas = 0;
    foreach($this->__arrResponse["Importes"] as $intIndice => $arrInfo) {
      $arrTextos[$intIndice]["Nombre"    ] = (utf8_encode($arrInfo["txt_Importe"]));
      $arrTextos[$intIndice]["Gold"      ] = Variables::FormatoCurrency($arrInfo["imp_Pq_Gold"      ]);
      $arrTextos[$intIndice]["Amplio"    ] = Variables::FormatoCurrency($arrInfo["imp_Pq_Amplio"    ]);
      $arrTextos[$intIndice]["Limitado"  ] = Variables::FormatoCurrency($arrInfo["imp_Pq_Limitado"  ]);
      $arrTextos[$intIndice]["Basico"    ] = Variables::FormatoCurrency($arrInfo["imp_Pq_Basico"    ]);
      $arrTextos[$intIndice]["Segmentado"] = Variables::FormatoCurrency($arrInfo["imp_Pq_Segmentado"]);
      
      if(strtoupper(substr($arrTextos[$intIndice]["Nombre"], 0, 11)) == "PRIMA TOTAL") {
        $intEnNegritas = 1;
        $arrTextos[$intIndice]["Cuadro"  ] = "1";
      } else {
        $arrTextos[$intIndice]["Cuadro"  ] = "0";
      }
      $arrTextos[$intIndice]["Negritas"  ] = $intEnNegritas;
    }
    
    foreach($arrTextos as $intIndice => $arrInfoImprimir) {
      $this->__ImprimirLineaDetallePago($arrInfoImprimir, $intOffsetY + ($intIndice * 5), $intOffsetX);
    }
  }
  
  function __ImprimirTotalesCobertura($intOffsetY) {
    $this->__ImprimirFormaPago   ($intOffsetY, 16);
    $this->__ImprimirDetallesPago($intOffsetY, 68);
  }
  
  function ImprimirDetalleCobertura() {
    $this->__ImprimirCabeceraDetalleCobertura(113);
    $this->__ImprimirDetallesCobertura       (128);
    $this->__ImprimirTotalesCobertura        (132 + (count($this->__arrResponse["Coberturas"]) * 3.5));
  }
  
  function ImprimirInformacionFinal() {
    $intOffsetX =  16;
    $intOffsetY = 240;
    global $strGPath;
    
    $this->oTCPDF->SetFont('helvetica', '', 7);
    $this->oTCPDF->SetTextColor(0);
    $this->oTCPDF->MultiCell(30, 4, "Cobertura Incluida", $this->__intBordesPrueba, "R", 0, 0, $intOffsetX + 100, $intOffsetY - 8);
    $this->oTCPDF->Image("$strGPath/images/chartis_cotiza_paloma.png", $intOffsetX + 130, $intOffsetY - 8, 4, '');
    
    $this->oTCPDF->Line($intOffsetX +   0, $intOffsetY + 0, $intOffsetX + 178, $intOffsetY + 0);
    $this->oTCPDF->Line($intOffsetX +   0, $intOffsetY + 4, $intOffsetX + 178, $intOffsetY + 4);
    $this->oTCPDF->Line($intOffsetX +   0, $intOffsetY + 0, $intOffsetX +   0, $intOffsetY + 4);
    $this->oTCPDF->Line($intOffsetX + 178, $intOffsetY + 0, $intOffsetX + 178, $intOffsetY + 4);
    
    $this->oTCPDF->SetFont('helvetica', '', 7);
    $this->oTCPDF->SetTextColor(0);
    $this->oTCPDF->MultiCell(20, 4, "No de Agente"    , $this->__intBordesPrueba, "L", 0, 0, $intOffsetX +  2, $intOffsetY + 10);
    $this->oTCPDF->MultiCell(24, 4, "Nombre de agente", $this->__intBordesPrueba, "L", 0, 0, $intOffsetX + 88, $intOffsetY + 10);
    
    $this->oTCPDF->SetFont('helvetica', 'B', 7);
    $this->oTCPDF->SetTextColor(0);
    $this->oTCPDF->MultiCell(40, 4, $this->__arrResponse["Cotizacion"]["cod_Agente"], $this->__intBordesPrueba, "C", 0, 0, $intOffsetX +  22, $intOffsetY + 10);
//    $this->oTCPDF->MultiCell(66, 4, "-- NO EXISTE TABLA --", $this->__intBordesPrueba, "C", 0, 0, $intOffsetX + 112, $intOffsetY + 10);
    $this->oTCPDF->MultiCell(66, 4, "IGNACIO BERRONDO AVALOS", $this->__intBordesPrueba, "C", 0, 0, $intOffsetX + 112, $intOffsetY + 10);
    $this->oTCPDF->Line($intOffsetX +  22, $intOffsetY + 14, $intOffsetX +  62, $intOffsetY + 14);
    $this->oTCPDF->Line($intOffsetX + 112, $intOffsetY + 14, $intOffsetX + 178, $intOffsetY + 14);
    
    $strFinal  = "";
    $strFinal .= "Este documento solo constituye una cotización de seguro y, ";
    $strFinal .= "por tanto, no representa garantía alguna de que la misma será ";
    $strFinal .= "aceptada por Chartis Seguros México, S.A. de C.V., ni de que, ";
    $strFinal .= "en caso de aceptarse, la aceptación concuerde totalmente con ";
    $strFinal .= "los términos de la solicitud. Esta cotización tiene una ";
    $strFinal .= "validez de 15 días naturales a partir de la fecha de ";
    $strFinal .= "elaboración.";
    
    $this->oTCPDF->SetFont('helvetica', 'B', 8);
    $this->oTCPDF->SetTextColor(0);
    $this->oTCPDF->MultiCell(178, 4, $strFinal, $this->__intBordesPrueba, "L", 0, 0, $intOffsetX + 0, $intOffsetY + 22);
    
  }
  
  function DoRender() {
    $this->CreateNewPage             ();
    $this->ImprimirInformacionGeneral();
    $this->ImprimirDetalleCobertura  ();
    $this->ImprimirInformacionFinal  ();
  }
  
  function Guardar($strNombreArchivo = "", $strTipoGuardado = "I") {
    global $strGPath;
    global $strGUploads;
    $strRandName = date("YmdHis-") . sprintf("%04d", rand(1000, 9999)) . ".pdf";
    $strPathRel = "$strGUploads/tmp/$strRandName";
    parent::Guardar("$strGPath/$strPathRel", "F");
    return $strPathRel;
  }
}

?>
